package com.powernode.controller;

import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.powernode.domain.IndexImg;
import com.powernode.service.IndexImgService;
import com.powernode.utils.AuthUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 内容:
 * 作者: cy
 */
@RestController
@Api(tags = "轮播图管理")
@RequestMapping("admin/indexImg")
public class IndexImgController {

    @Autowired
    private IndexImgService indexImgService;

    @GetMapping("page")
    @ApiOperation("分页查询轮播图管理")
    @PreAuthorize("hasAuthority('admin:indexImg:page')")
    public ResponseEntity<Page<IndexImg>> loadIndexImgPage(Page<IndexImg> page, IndexImg indexImg) {
        Page<IndexImg> indexImgPage = indexImgService.selectIndexImgPage(page, indexImg);
        return ResponseEntity.ok(indexImgPage);
    }


    @PostMapping
    @ApiOperation("新增轮播图")
    @PreAuthorize("hasAuthority('admin:indexImg:save')")
    public ResponseEntity<Void> addIndexImg(@RequestBody IndexImg indexImg) {
        Long shopId = AuthUtil.getUserIdOrShopId(false);
        indexImg.setShopId(shopId);
        indexImgService.saveIndexImg(indexImg);
        return ResponseEntity.ok().build();
    }


    @GetMapping("info/{id}")
    @ApiOperation("回显轮播图")
    @PreAuthorize("hasAuthority('admin:indexImg:info')")
    public ResponseEntity<IndexImg> getIndexImgInfo(@PathVariable("id") Long id) {
        IndexImg indexImg = indexImgService.selectIndexImgInfo(id);
        return ResponseEntity.ok(indexImg);
    }
    ///////////////////前台上传的接口////////////////

    /**
     * 微信小程序的性能 不好的
     * 微信小程序的项目打包发布 大小不能大于  4M
     * 图片最占大小  不要直接放图片
     * <p>
     * 特别注意  返回值要尽量的小   要极致追求性能
     * 前台不需要的字段和属性 不给他
     * 外面开发 不要使用select *
     * 给会员看的页面 一定要判断状态
     * Null 值 最好不要参与序列化和返回
     *
     * @return
     */
    @GetMapping("indexImgs")
    @ApiOperation("加载前台商城的轮播图")
    public ResponseEntity<List<IndexImg>> getFrontIndexImg() {
        List<IndexImg> indexImgs = indexImgService.selectFrontIndexImg();
        return ResponseEntity.ok(indexImgs);
    }



}
